<?php
/**
 * 苏州实时公交抓取
 * User: lisgroup
 * Date: 18-5-11
 * Time: 上午10:10
 */

namespace App\HttpController\Bus;


use App\Repository\BusRepository;
use App\ViewController;
use EasySwoole\Core\Http\Message\Status;


class Index extends ViewController
{
    /**
     * 视图：首页展示页面
     */
    public function index()
    {
        //$this->response()->write("bus index");/*  url:domain/api/index.html  domain/api/  */
        //17年5月9日新增 搜索历史的功能
        // $cookie_line = $_COOKIE['cookie_line'] ?? '';
        $cookie_line = $this->request()->getCookieParams('cookie_line');
        $cookie_line = isset($cookie_line) ? unserialize($cookie_line) : [];
        if (!is_array($cookie_line)) {
            $cookie_line = [];
        }
        $data = ['cookie_line' => $cookie_line];

        // 输出Index模板
        $this->fetch('index/index', $data);

        // $this->response()->write("bus index");/*  url:domain/api/index.html  domain/api/  */
    }

    /**
     * 视图：页面显示获取实时公交数据 table 列表
     * 数据来自 szjt.gov.cn，需要限制访问频率，1秒一次请求
     */
    public function line()
    {
        //页面访问频率限制操作，使用cookie保存每次请求的时间点
        //sleepVisit(); // 是否需要延迟访问

        //‌array ('url' => 'APTSLine.aspx?LineGuid=547E0449-A28B-1770-B4CA-31A11D6A3C72','LineInfo' => '55(众泾社区停车场)',)
        $request = $this->request();
        // $get = $request->getParsedBody();
        $get = $request->getQueryParams();

        if (empty($get['url']) || empty($get['LineInfo'])) {
            $this->response()->redirect('/bus');
        }

        $html = BusRepository::getInstent()->getLine($get);

        // 输出模板
        $this->fetch('index/line', ['html' => $html]);
    }

    /**
     * 接口 API： 采集 bus 网址是表单数据
     * @return mixed
     */
    public function getList()
    {
        //用户输入，搜索的线路
        $request = $this->request();
        $inputData = $request->getParsedBody();
        // $inputData = $request->getQueryParams();
        // var_dump($inputData);

        if (empty($inputData)) {
            return $this->writeJson(200, '输入数据有误', 'success');
        }

        // 表单验证失败
        /*if ($result !== true) {
            return $this->error($result);
        }*/
        $line = $inputData['linename'];
        $line = preg_replace('/快\b(\d)/', '快线$1', $line);

        $busRepository = BusRepository::getInstent();
        $html = $busRepository->getList($line, true);

        //json 格式输出
        return $this->writeJson(200, $html, 'success');
    }

    protected function actionNotFound($action): void
    {
        $this->writeJson(Status::CODE_NOT_FOUND);
    }
}